#if !defined(__APP_DEVICE_H)
#define __APP_DEVICE_H
#include "app_buffer.h"
#include <pthread.h>

// 设备结构体
typedef struct {
    char *filename; // 串口文件名
    int fd; // 文件描述符
    Buffer *up_buffer; // 上行缓冲区
    Buffer *down_buffer; // 下行缓冲区
    pthread_t read_thread; // 读线程
    int is_running; // 是否正在运行的标识
    long last_write_time; // 最后写的时间
    int (*pre_write)(char *data, int len); // 写前处理函数 （字符数组 =》 蓝牙数据）
    int (*post_read)(char *data, int len); // 读后处理函数 （蓝牙数据 =》 字符数组）
} Device;

/**
 * @brief 初始化设备
 * 
 */
Device *app_device_init(char *filename);

/**
 * @brief 启动设备
 * 
 */
int app_device_start();

/**
 * @brief 停止设备
 * 
 */
void app_device_stop();

#endif // __APP_DEVICE_H
